package com.zenithmind.gateway.route;

import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder.Builder;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;

/**
 * 用户账户相关服务路由配置器
 * 专门负责用户服务、权限/角色服务的路由配置
 * 遵循单一职责原则：只负责用户账户相关的路由配置
 */
@Slf4j
@Component
public class UserAccountRouteConfigurer implements RouteConfigurer {

    @Override
    public void configureRoutes(Builder routes) {
        log.info("配置用户账户相关服务路由...");
        
        // 用户服务路由 - 用户管理、认证、个人信息
        routes.route("user-service-route", r -> r
            .path("/api/user/**",
                  "/api/zenithMind/user/**",
                  "/api/zenithMind/auth/**",
                  "/api/zenithMind/verification/**",
                  "/api/zenithMind/email/**",
                  "/api/zenithMind/profile/**")
            // 不再使用stripPrefix过滤器，保留完整路径
            .uri("lb://user-service"));
        
        // 仪表盘服务路由 - 统计数据、概览信息
        routes.route("dashboard-route", r -> r
            .path("/api/zenithMind/v1/dashboard/**",
                  "/api/zenithMind/stats/**")
            .uri("lb://user-service"));
        
        // 角色和权限服务路由
        routes.route("role-permission-route", r -> r
            .path("/api/zenithMind/role/**",
                  "/api/zenithMind/permission/**")
            .uri("lb://user-service"));
    }

    @Override
    public String getConfigureName() {
        return "UserAccountRouteConfigurer";
    }

    @Override
    public int getOrder() {
        return 1; // 用户相关路由优先级较高
    }
}
